package org.jeecg.modules.wlhy.hydriver.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Past;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * @Description: 司机管理
 * @Author: duanlikao
 * @Date:   2020-12-02
 * @Version: V1.0
 */
@Data
@TableName("hy_driver")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="hy_driver对象", description="司机管理")
public class HyDriver implements Serializable {
    private static final long serialVersionUID = 1L;

	/**id*/
	@TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "id")
    private java.lang.String id;

    @ApiModelProperty(value = "userId")
    private java.lang.String userId;

	/**姓名*/
	@Excel(name = "姓名", width = 15)
    @ApiModelProperty(value = "姓名")
    @NotEmpty(message = "司机姓名不允许为空")
    private java.lang.String driverName;
	/**身份证号*/
	@Excel(name = "身份证号", width = 15)
    @ApiModelProperty(value = "身份证号")
    @NotEmpty(message = "身份证号不允许为空")
    //@SensitiveField(type = SensitiveEnum.ID_CARD)
    private java.lang.String idcard;
    /**身份证有效期自*/
    @Excel(name = "身份证有效期自", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "身份证有效期自")
    private java.util.Date idcardValidFrom;
	/**身份证有效期至*/
	@Excel(name = "身份证有效期至", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "身份证有效期至")
    private java.util.Date idcardExpiredDate;
	/**身份证正面照片*/
	@Excel(name = "身份证正面照片", width = 15)
    @ApiModelProperty(value = "身份证正面照片")
    @NotEmpty(message = "身份证正面照片不允许为空")
    private java.lang.String idcardImg;
	/**身份证反面面照片*/
	@Excel(name = "身份证反面面照片", width = 15)
    @ApiModelProperty(value = "身份证反面面照片")
    @NotEmpty(message = "身份证反面面照片不允许为空")
    private java.lang.String idcardImgBack;
	/**性别*/
	@Excel(name = "性别", width = 15, dicCode = "sex")
	@Dict(dicCode = "sex")
    @ApiModelProperty(value = "性别")
    private java.lang.String sex;
	/** 手机号 */
	@Excel(name = " 手机号 ", width = 15)
    @ApiModelProperty(value = " 手机号 ")
    @NotEmpty(message = "手机号不允许为空")
    @Size(max = 11,min = 11,message = "手机号11位数")
    private java.lang.String telephone;
	/**籍贯*/
	@Excel(name = "籍贯", width = 15)
    @ApiModelProperty(value = "籍贯")
    private java.lang.String nativePlace;
	/**民族*/
	@Excel(name = "民族", width = 15)
    @ApiModelProperty(value = "民族")
    private java.lang.String nation;
	/**生日*/
	@Excel(name = "生日", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "生日")
    private java.util.Date birthday;
	/**住址*/
	@Excel(name = "住址", width = 15)
    @ApiModelProperty(value = "住址")
    private java.lang.String address;
	/**所属承运商*/
//	@Excel(name = "所属承运商", width = 15, dictTable = "hy_carrier", dicText = "carrier_name", dicCode = "id")
    @Dict(dictTable = "hy_captain", dicText = "captain_name", dicCode = "id")
    @ApiModelProperty(value = "所属承运商")
    private java.lang.String carrierId;
	/**驾驶证号(身份证号)*/
	@Excel(name = "驾驶证号(身份证号)", width = 15)
    @ApiModelProperty(value = "驾驶证号(身份证号)")
    @NotEmpty(message = "驾驶证号(身份证号)不允许为空")
    private java.lang.String drivingLicense;
	/**驾驶证正面照*/
	@Excel(name = "驾驶证正面照", width = 15)
    @ApiModelProperty(value = "驾驶证正面照")
    @NotEmpty(message = "驾驶证正面照不允许为空")
    private java.lang.String driverImg;
	/**驾驶证副页照片*/
	@Excel(name = "驾驶证副页照片", width = 15)
    @ApiModelProperty(value = "驾驶证副页照片")
//    @NotEmpty(message = "驾驶证副页照片不允许为空")
    private java.lang.String driverImg2;
	/**准驾车型*/
	@Excel(name = "准驾车型", width = 15, dicCode = "vehicle_class")
//	@Dict(dicCode = "vehicle_class")
    @ApiModelProperty(value = "准驾车型")
    @NotEmpty(message = "准驾车型不允许为空")
    private java.lang.String vehicleClass;

	/**驾驶证发证机关*/
	@Excel(name = "驾驶证发证机关", width = 15)
    @ApiModelProperty(value = "驾驶证发证机关")
    @NotEmpty(message = "驾驶证发证机关不允许为空")
    private java.lang.String issuingOrganizations;

    /**驾驶证首次签发日期*/
    @Excel(name = "驾驶证首次签发日期", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "驾驶证首次签发日期")
    @Past(message = "驾驶证首次签发日期过去的时间")
//    @NotEmpty(message = "驾驶证首次签发日期不允许为空")
    private java.util.Date issueStartDate;
	/**驾驶证有效期自*/
	@Excel(name = "驾驶证有效期自", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "驾驶证有效期自")
    @Past(message = "驾驶证有效期自过去的时间")
    //@NotEmpty(message = "驾驶证有效期不允许为空")
    private java.util.Date validPeriodFrom;
	/**驾驶证有效期至*/
	@Excel(name = "驾驶证有效期至", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "驾驶证有效期至")
    //@Future(message = "驾驶证有效期至需要一个将来时间")
   // @NotEmpty(message = "驾驶证有效期至不允许为空")
    private java.util.Date validPeriodTo;
	/**所驾驶车辆总重量类别(1、大于4.5吨 2、 4.5吨及一下 )*/
	@Excel(name = "所驾驶车辆总重量类别", width = 15, dicCode = "weight_type")
	@Dict(dicCode = "weight_type")
    @ApiModelProperty(value = "所驾驶车辆总重量类别(1、大于4.5吨 2、 4.5吨及一下 )")
    private java.lang.String weightType;
	/**从业资格证号*/
	@Excel(name = "从业资格证号", width = 15)
    @ApiModelProperty(value = "从业资格证号")
    private java.lang.String qualificationCertificate;
	/**从业资格证照片*/
	@Excel(name = "从业资格证照片", width = 15)
    @ApiModelProperty(value = "从业资格证照片")
    private java.lang.String qualificationImg;
	/**从业资格证有效期*/
	@Excel(name = "从业资格证有效期", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "从业资格证有效期")
    private java.util.Date qualificationExpiredDate;

    /**是否挂靠(1表示是 0表示否)*/
    @Excel(name = "是否挂靠", width = 15)
    @ApiModelProperty(value = "是否挂靠(1表示是 0表示否)")
//    @NotEmpty(message = "是否挂靠不允许为空")
    private java.lang.String izAffiliation;

    /**挂靠协议*/
//    @Excel(name = "挂靠协议", width = 15)
    @ApiModelProperty(value = "挂靠协议")
    private java.lang.String affiliationAgreement;



	/**是否启用(1表示是 0表示否)*/
//	@Excel(name = "是否启用(1表示是 0表示否)", width = 15)
    @ApiModelProperty(value = "是否启用(1表示是 0表示否)")
    private java.lang.String izUsed;
	/**审核状态(0待审核 1审核通过 2审核失败)*/
//	@Excel(name = "审核状态(0待审核 1审核通过 2审核失败)", width = 15)
    @ApiModelProperty(value = "审核状态(0待提交审核 1待审核 2审核通过 3审核失败)")
    private java.lang.String examineStatus;


    @Dict(dicCode = "examine_type")
    @ApiModelProperty(value = "审核类型( 1人工审核 0机器审核)")
    private java.lang.String examineType;

	/**examineDate*/
//	@Excel(name = "examineDate", width = 15, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "examineDate")
    private java.util.Date examineDate;
	/**审核备注*/
//	@Excel(name = "审核备注", width = 15)
    @ApiModelProperty(value = "审核备注")
    private java.lang.String examinRemark;
	/**所属部门*/
	@Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "org_code")
    @ApiModelProperty(value = "所属部门")
    private java.lang.String sysOrgCode;
	/**创建人*/
    @ApiModelProperty(value = "创建人")
    @Excel(name = "创建人",  dicCode = "create_by")
    private java.lang.String createBy;
	/**创建日期*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建日期")
    @Excel(name = "创建日期",  dicCode = "create_time",format = "yyyy-MM-dd HH:mm:ss")
    private java.util.Date createTime;
	/**更新人*/
    @ApiModelProperty(value = "更新人")
    @Excel(name = "更新人",  dicCode = "update_by")
    private java.lang.String updateBy;
	/**更新日期*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新日期")
    @Excel(name = "更新日期",  dicCode = "update_time",format = "yyyy-MM-dd HH:mm:ss")
    private java.util.Date updateTime;
	/**监管上报状态(0未上传 1上传成功 2上传失败)*/
//	@Excel(name = "监管上报状态(0未上传 1上传成功 2上传失败)", width = 15)
    @ApiModelProperty(value = "监管上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String uploadStatus;
	/**监管上报时间*/
//	@Excel(name = "监管上报时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "监管上报时间")
    private java.util.Date uploadDate;


    /**河北上报状态(0未上传 1上传成功 2上传失败)*/
//    @Excel(name = "河北上报状态(0未上传 1上传成功 2上传失败)", width = 15)
    @ApiModelProperty(value = "河北上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String hbUploadStatus;
    /**河北上报时间*/
//    @Excel(name = "河北上报时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "河北上报时间")
    private java.util.Date hbUploadDate;

	/**删除状态(0-正常,1-已删除)*/
//	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
    @TableLogic
    private java.lang.String delFlag;

    /**行政区划代码*/
    @Excel(name = "行政区划代码", width = 15)
    @ApiModelProperty(value = "行政区划代码")
    private java.lang.String areaCode;

    /**天津税务上报状态(0未上传 1上传成功 2上传失败)*/
//    @Excel(name = "天津税务上报状态(0未上传 1上传成功 2上传失败)", width = 15, dicCode = "upload_status")
    @Dict(dicCode = "upload_status")
    @ApiModelProperty(value = "天津税务上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String tjTaxUploadStatus;
    /**天津税务上报时间*/
//    @Excel(name = "天津税务上报时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "天津税务上报时间")
    private java.util.Date tjTaxUploadTime;

    /**道达上报状态(0未上传 1上传成功 2上传失败)*/
//    @Excel(name = "道达上报状态(0未上传 1上传成功 2上传失败)", width = 15, dicCode = "upload_status")
    @Dict(dicCode = "upload_status")
    @ApiModelProperty(value = "道达上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String daodaUploadStatus;
    /**道达上报时间*/
//    @Excel(name = "道达上报时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "道达上报时间")
    private java.util.Date daodaUploadTime;

    /**道达上报失败原因*/
    @ApiModelProperty(value = "道达上报失败原因")
    private String daodaFailureReason;

    /**辽宁税务上报状态(0未上传 1上传成功 2上传失败)司机信息|身份证正面照片|身份证反面照片|驾驶证照片*/
//    @Excel(name = "辽宁税务上报状态(0未上传 1上传成功 2上传失败)", width = 15)
    @ApiModelProperty(value = "辽宁税务上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String lnTaxUploadStatus;
    /**辽宁税务上报时间*/
//    @Excel(name = "辽宁税务上报时间", width = 20)
    @ApiModelProperty(value = "辽宁税务上报时间")
    private java.lang.String lnTaxUploadTime;



    /**快货运上报司机状态(0未上传 1上传成功 2上传失败)*/
//    @Excel(name = "快货运上报司机状态(0未上传 1上传成功 2上传失败)", width = 15, dicCode = "upload_status")
    @Dict(dicCode = "upload_status")
    @ApiModelProperty(value = "快货运上报司机状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String tosUploadDriverStatus;
    /**快货运上报司机时间*/
//    @Excel(name = "快货运上报司机时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "快货运上报司机时间")
    private java.util.Date tosUploadDriverTime;

    /**快货运上报承运人状态(0未上传 1上传成功 2上传失败)*/
//    @Excel(name = "快货运上报承运人状态(0未上传 1上传成功 2上传失败)", width = 15, dicCode = "upload_status")
    @Dict(dicCode = "upload_status")
    @ApiModelProperty(value = "快货运上报承运人状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String tosUploadCarrierStatus;
    /**快货运上报承运人时间*/
//    @Excel(name = "快货运上报承运人时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "快货运上报承运人时间")
    private java.util.Date tosUploadCarrierTime;


/**安徽上报状态(0未上传 1上传成功 2上传失败)*/
//    @Excel(name = "安徽上报状态(0未上传 1上传成功 2上传失败)", width = 15)
    @ApiModelProperty(value = "安徽上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String ahUploadStatus;
    /**安徽上报时间*/
//    @Excel(name = "安徽上报时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "安徽上报时间")
    private java.util.Date ahUploadDate;


 /**是否导入标识(1表示是 0表示否)*/
//    @Excel(name = "是否导入标识(1表示是 0表示否)", width = 15)
    @ApiModelProperty(value = "是否导入标识(1表示是 0表示否)")
    @Dict(dicCode = "yn")
    private java.lang.String dirverImportFlag;

    @ApiModelProperty(value = "上报失败原因")
    private java.lang.String reportFailureReason;


    /**江苏上报状态(0未上传 1上传成功 2上传失败)*/
    @ApiModelProperty(value = "江苏上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String jsUploadStatus;
    /**江苏上报时间*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "江苏上报时间")
    private java.util.Date jsUploadDate;

    @ApiModelProperty(value = "税务代开协议")
    private java.lang.String swAgreement;

    @ApiModelProperty(value = "司机签名图片")
    private java.lang.String driverAutograph;

    /**山西上报状态(0未上传 1上传成功 2上传失败)*/
    @ApiModelProperty(value = "山西上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String sxUploadStatus;
    /**山西上报时间*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "山西上报时间")
    private java.util.Date sxUploadDate;


    /**山东上报状态(0未上传 1上传成功 2上传失败)*/
    @ApiModelProperty(value = "山东上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String sdUploadStatus;
    /**山东上报时间*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "山东上报时间")
    private java.util.Date sdUploadDate;


    /**产业园上报状态(0未上传 1上传成功 2上传失败)*/
    @ApiModelProperty(value = "产业园上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String xzUploadStatus;
    /**产业园上报时间*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "产业园上报时间")
    private java.util.Date xzUploadDate;

    /**中交兴路上报状态(0未上传 1上传成功 2上传失败)*/
    @ApiModelProperty(value = "中交兴路上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String zjUploadStatus;
    /**中交兴路上报时间*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "中交兴路上报时间")
    private java.util.Date zjUploadDate;


    @ApiModelProperty(value = "税务代开协议")
    private String invoiceAgreement;


    /**湖北上报状态(0未上传 1上传成功 2上传失败)*/
    @ApiModelProperty(value = "湖北上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String hubeiUploadStatus;
    /**湖北上报时间*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "湖北上报时间")
    private java.util.Date hubeiUploadDate;

    /**江西上报状态(0未上传 1上传成功 2上传失败)*/
    @ApiModelProperty(value = "江西上报状态(0未上传 1上传成功 2上传失败)")
    private java.lang.String jxUploadStatus;
    /**江西上报时间*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "江西上报时间")
    private java.util.Date jxUploadDate;

    @ApiModelProperty(value = "微信用户openid")
    private String wxOpenid;

    @ApiModelProperty(value = "服务方唯一标识")
    private String fwfuuid;

}
